package chat;

import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;

import server.IntermediateServer;

public class ChatServer extends Thread {

	IntermediateServer is;

	ServerSocket serverSocket;	// 1-1. for Chatting Server Process 채팅 처리
	Socket socket;	
	HashMap<String, ChatServerThread> hash_chatter = new HashMap<String, ChatServerThread>();	// Hashmap saved m_id (id를 저장한 해쉬맵) 
	HashMap<String, String> hash_id_name = new HashMap<String, String>();
	ChatServerThread chatServerThread;		
	int port=0;
	
	boolean flag = true;
	
	public ChatServer() {
		try{					
			InetAddress ia = InetAddress.getLocalHost();	// 1) get ipAdress (ip주소를 받아옴) 
			start();			// 2) start the thread (쓰레드를 실행함)
		}catch(Exception ex){
			
		}
	}
	
	public ChatServer(int Port_number, IntermediateServer is){	
		this.is = is;
		this.port = Port_number;
		try{					
//			InetAddress ia = InetAddress.getLocalHost();	// 1) get ipAdress (ip주소를 받아옴) 
			start();			// 2) start the thread (쓰레드를 실행함)
			System.out.println("1. 채팅서버에서 run이 되었소이다.");//실행 
		}catch(Exception ex){
			
		}
	}
	
	
	@Override
	public void run() {			
		try{											
			serverSocket = new ServerSocket(port);  // 2) 포트넘버의 서버를 만든다.
			System.out.println("2. 채팅서버가 시작되었습니다.");//실행  	// 1) This Server doesn't have frame. so print about Server start 
			
			System.out.println("3. 채팅서버 while문 전까지 들어왔소이다.");//실행 
			while (flag){								
			socket = serverSocket.accept();		// 
			System.out.println("4. 채팅서버에서 accept되며 새로 생기고 있소.");//실행 
			InetAddress ia = socket.getInetAddress();//접속한 클라이언트의 로컬정보를 ia로 선언. 
			String ip = ia. getHostAddress();	//접속한 클라이언트의 로컬정보 중 ip주소(localhost)를 String ip로 선언.  
			chatServerThread = new ChatServerThread(this, socket); // 쓰레드를 꼭 실행시키자 
			System.out.println("5. "+ ip + "로부터 접속되었습니다.\n"); //실행 
			} 
			
		} catch(IOException e){
			e.printStackTrace();
		}
	}
	
// <4. sendMsg> (메시지 전송 메소드) 
//	public void sendMsg(){
//	}
		
		
//	public static void main(String[] args){
//		new ChatServer();
//	}
}
